/**
 * Este controlador se encarga de administrar todas las peticiones referidos al cliente.
 */
package com.bbva.cbm.web.servlet.spring.operatoria;
import static cbm.commons.UtilitarioFunciones.mostrarResultado;
import static cbm.commons.UtilitarioFunciones.obtenerValorParametro;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.ModelAndView;

import cbm.commons.BResult;
import cbm.commons.BaseController;
import cbm.commons.Constantes;
import cbm.commons.ConstantsWeb;
import cbm.commons.ObtenerPersonaReniecServiceImpl;
import ejb.cbm.operatoria.bean.ClienteBean;
import ejb.cbm.operatoria.entity.ClienteEntity;
import ejb.com.bbva.cbm.service.OperativaServiceLocal;

public class ClienteController extends BaseController {
	
	private OperativaServiceLocal operativaServiceLocal;
	@Autowired
	public void setOperativaServiceLocal(OperativaServiceLocal operativaServiceLocal) {
		this.operativaServiceLocal = operativaServiceLocal;
	}

	public ClienteController(){

	}
	

	public ModelAndView open(HttpServletRequest request, HttpServletResponse response) {
		HttpSession session = null;
		String paginaSig = resources.getString("buscar_cliente");
		
		try {
			session = request.getSession();
			session.setAttribute("tiposDocumento", operativaServiceLocal.obtenerTiposDocumento());
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return new ModelAndView(paginaSig);
	}
	
	public ModelAndView buscarCliente(HttpServletRequest request, HttpServletResponse response){
		String paginaSig    = resources.getString("ajaxrequest");
		String tipoDocumento = obtenerValorParametro(request.getParameter("selTipoDocumento"));
		String numeroDocumento = obtenerValorParametro(request.getParameter("txtNumeroDocumento"));
		String nombre = obtenerValorParametro(request.getParameter("txtNombre"));
		String primerApellido = obtenerValorParametro(request.getParameter("txtApellidoPaterno"));
		String segundoApellido = obtenerValorParametro(request.getParameter("txtApellidoMaterno"));
		String razonSocial = obtenerValorParametro(request.getParameter("txtRazonSocial"));
		
		StringBuilder tablaResultado = new StringBuilder(); 
		try {
			List<ClienteEntity> clientes = operativaServiceLocal.buscarCliente(tipoDocumento, numeroDocumento, nombre, primerApellido, segundoApellido, razonSocial);
			if(clientes != null) {
				for (ClienteEntity cliente : clientes) {
					tablaResultado.append("<tr>");
					tablaResultado.append("<td class='tceldatabla'>"+mostrarResultado(cliente.getTipoDocumento().getDescripcion())+"</td>");
					tablaResultado.append("<td class='tceldatabla'>"+mostrarResultado(cliente.getNumerocliente())+"</td>");
					tablaResultado.append("<td class='tceldatabla'>"+mostrarResultado(cliente.getPrimerapellido())+"</td>");
					tablaResultado.append("<td class='tceldatabla'>"+mostrarResultado(cliente.getSegundoapellido())+"</td>");
					tablaResultado.append("<td class='tceldatabla'>"+mostrarResultado(cliente.getNombrecliente())+"</td>");
					tablaResultado.append("<td class='tceldatabla'>"+mostrarResultado(cliente.getNumerotelefono1())+"</td>");
					tablaResultado.append("<td class='tceldatabla'>"+mostrarResultado(cliente.getCodigoestado())+"</td>");
					tablaResultado.append("<td class='tceldatabla'>"+mostrarResultado(cliente.getCodigoestadocivil())+"</td>");
					tablaResultado.append("<td class='tceldatabla'>"+mostrarResultado(cliente.getCodigosexo())+"</td>");
					tablaResultado.append("<td class='tceldatabla'>"+mostrarResultado(cliente.getDescripcionetiquetacomercial())+"</td>");
					if(cliente.getTipoDocumento().getCodigoparametro()==ConstantsWeb.TIPO_DOCU_DNI_ID){
						tablaResultado.append("<td><input type='button'onclick='javascript:buscarReniec("+cliente.getNumerocliente()+");' value='Consultar Reniec' /></td>");
					}else{
						tablaResultado.append("<td class='tceldatabla'>&nbsp;</td>");
					}
					tablaResultado.append("</tr>");
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return new ModelAndView(paginaSig, "responseText", tablaResultado.toString());
	}
	
	public ModelAndView consultarReniec(HttpServletRequest request, HttpServletResponse response){
		String paginaSig    = resources.getString("buscar_reniec");
		String tipoDocumento = obtenerValorParametro(request.getParameter("tipoDocumento"));
		String numeroDocumento = obtenerValorParametro(request.getParameter("numeroDocumento"));
		String usuario ="";
		String codOficina ="";
		HttpSession session = null;
		ObtenerPersonaReniecServiceImpl service= new ObtenerPersonaReniecServiceImpl();
		try {
			BResult result = service.devolverPersonaReniecDNI(usuario, codOficina, numeroDocumento);
			ClienteBean bCliente = new ClienteBean();
			if(result.getCode() == Constantes.VV_EXITO){
				bCliente = (ClienteBean) result.getObject();
			}
			
			session = request.getSession();
			session.setAttribute("datosPersona", bCliente);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return new ModelAndView(paginaSig);
	}

	public ModelAndView save(HttpServletRequest request, HttpServletResponse response){
		return new ModelAndView();
	}

	public ModelAndView update(HttpServletRequest request, HttpServletResponse response){
		return new ModelAndView();
	}

	public ModelAndView buscar(HttpServletRequest request, HttpServletResponse response){
		return new ModelAndView();
	}

	public ModelAndView iniciarAplicacion(HttpServletRequest request, HttpServletResponse response) {  
		
		return new ModelAndView();
		
	}

	
}